/*
 * personal.c
 *
 *  Created on: May 15, 2011
 *      Author: A126872
 */
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "personal.h"
#include "file_handler.h"


int tr_comparator(void * t1, void * t2)
{
	trabajador_t * pT1 = (trabajador_t*)t1;
	trabajador_t * pT2 = (trabajador_t*)t2;
	return ! (pT1->codigo == pT2->codigo);
}

int tr_isEmtpy(void * t1)
{
	trabajador_t * pT1 = (trabajador_t*)t1;
	return (pT1->codigo == -1);
}

void tr_clearData(void * t1)
{
	trabajador_t * pT1 = (trabajador_t*)t1;
	memset(pT1, 0, sizeof(trabajador_t));
	pT1->codigo = -1;
}

file_handler_t abrir_fichero_trabajadores(char * fichero)
{
	return fh_open(fichero, sizeof(trabajador_t), tr_comparator, tr_isEmtpy, tr_clearData);
}

int add_trabajador(file_handler_t ficheroTrabajadores, trabajador_t * ptrabajador)
{
	return fh_add_item(ficheroTrabajadores, ptrabajador);
}


int remove_trabajador(file_handler_t ficheroTrabajadores, trabajador_t * ptrabajador)
{
	return fh_remove_item(ficheroTrabajadores, ptrabajador);
}

int modify_trabajador(file_handler_t ficheroTrabajadores, trabajador_t * ptrabajador)
{
	return fh_modify_item(ficheroTrabajadores, ptrabajador);
}


int find_trabajador_by_codigo(file_handler_t ficheroTrabajadores, int codigo, trabajador_t * ptrabajador)
{
	return -1;
}
int find_trabajadores(FILE * ficheroTrabajadores, trabajador_t * ptrabajador, int * numTrabajadores)
{
	return 0;
}

int find_trabajador_by_puesto(FILE * ficheroTrabajadores, char * puesto, trabajador_t * ptrabajador, int * numTrabajadores)
{
	return 0;
}
int cerrar_fichero_trabajadores(file_handler_t ficheroTrabajadores){
	return fh_close(ficheroTrabajadores);
}


int read_trabajador(trabajador_t * trabajador){
	fprintf(stdout, "Introduzca Nombre\n");
	fflush(stdout);
	fscanf(stdin, "%s", trabajador->nombre);
	fprintf(stdout, "Introduzca Apellido 1\n");
	fflush(stdout);
	fscanf(stdin, "%s", trabajador->apellido1);
	fprintf(stdout, "Introduzca Apellido 2\n");
	fflush(stdout);
	fscanf(stdin, "%s", trabajador->apellido2);
	fprintf(stdout, "Introduzca Puesto\n");
	fflush(stdout);
	fscanf(stdin, "%s", trabajador->puesto);
	fprintf(stdout, "Introduzca Salario\n");
	fflush(stdout);
	fscanf(stdin, "%f", & (trabajador->salarioBrutoAnual));
	trabajador->codigo = time();
	return 0;
}

int print_trabajador(trabajador_t * trabajador)
{
	fprintf(stdout, "<%5d,%5.2f,%50s,%50s,%50s,%20s>\n",
			trabajador->codigo,
			trabajador->salarioBrutoAnual,
			trabajador->nombre,
			trabajador->apellido1,
			trabajador->apellido2,
			trabajador->puesto);
	fflush(stdout);
}

int print_trabajadores(FILE * ficheroTrabajadores)
{
	rewind(ficheroTrabajadores);
	trabajador_t trabajador;
	fread(&trabajador, sizeof(trabajador_t), 1, ficheroTrabajadores);
	while( ! feof(ficheroTrabajadores) ){
		print_trabajador(&trabajador);
		fread(&trabajador, sizeof(trabajador_t), 1, ficheroTrabajadores);
	}
	return 0;
}

